﻿using System;
using System.Collections.Generic;
using System.Data;
using System.Text;

namespace projetoFinal
{
    public class operaSeguradora
    {
        public static List<seguradora> listar(string field, string value, int crit)
        {
            List<seguradora> listSeguradora = new List<seguradora>();
            string strSQL = string.Empty;

            if (field.Equals(""))
            {
                strSQL = " SELECT * FROM cadastro WHERE tipo = 1 ";
            }
            else
            {
                strSQL = DAOHelper.sqlQueryBuilder("cadastro", field, value, crit);
            }

            using (IDataReader dr = DAOHelper.executeQuery(strSQL))
            {
                while (dr.Read())
                {
                    seguradora objSeguradora = new seguradora( Int64.Parse(dr["codCadastro"].ToString()), dr["nome"].ToString(), dr["matricula"].ToString(), new tipoPlano(Int64.Parse(dr["codTipoPlano"].ToString()), ""),
                                                              (status)Enum.Parse(typeof(status), dr["status"].ToString()), (situacaoFinanceira)Enum.Parse(typeof(situacaoFinanceira), dr["sitFinanceiro"].ToString()));
                    objSeguradora.Cnpj = dr["cnpj"].ToString();
                    objSeguradora.RazaoSocial = dr["razaoSocial"].ToString();
                    objSeguradora.Cep = dr["cep"].ToString();
                    objSeguradora.Endereco = dr["endereco"].ToString();
                    objSeguradora.Complemento = dr["complemento"].ToString();
                    objSeguradora.Numero = dr["numero"].ToString();
                    objSeguradora.Bairro = dr["bairro"].ToString();
                    objSeguradora.Cidade = dr["cidade"].ToString();
                    objSeguradora.Uf = dr["uf"].ToString();
                    objSeguradora.Fone = dr["fone"].ToString();
                    objSeguradora.ValorPlano = double.Parse(dr["valorPlano"].ToString());

                    listSeguradora.Add(objSeguradora);
                }
            }
            return listSeguradora;
        }

        public static int incluir(seguradora objSeguradora)
        {
            StringBuilder strSQL = new StringBuilder();
            strSQL.Append(" INSERT INTO ");
            strSQL.Append(" cadastro ");
            strSQL.Append(" ( ");
            strSQL.Append("     nome, matricula, codTipoPlano, status, sitFinanceiro, cnpj, razaoSocial,");
            strSQL.Append("     cep, endereco, complemento, numero, bairro, cidade, uf, fone, valorPlano, tipo");
            strSQL.Append(" ) ");
            strSQL.Append(" VALUES ");
            strSQL.Append(" ( ");
            strSQL.AppendFormat("{0}, ", "'" + objSeguradora.Nome + "'");
            strSQL.AppendFormat("{0}, ", "'" + objSeguradora.Matricula + "'");
            strSQL.AppendFormat("{0}, ", "'" + objSeguradora.TipoPlano.CodTipoPlano + "'");
            strSQL.AppendFormat("{0}, ", "'" + (Int32)objSeguradora.Status + "'");
            strSQL.AppendFormat("{0}, ", "'" + (Int32)objSeguradora.SitFinanceiro + "'");
            strSQL.AppendFormat("{0}, ", "'" + objSeguradora.Cnpj + "'");
            strSQL.AppendFormat("{0}, ", "'" + objSeguradora.RazaoSocial + "'");
            strSQL.AppendFormat("{0}, ", "'" + objSeguradora.Cep + "'");
            strSQL.AppendFormat("{0}, ", "'" + objSeguradora.Endereco + "'");
            strSQL.AppendFormat("{0}, ", "'" + objSeguradora.Complemento + "'");
            strSQL.AppendFormat("{0}, ", "'" + objSeguradora.Numero + "'");
            strSQL.AppendFormat("{0}, ", "'" + objSeguradora.Bairro + "'");
            strSQL.AppendFormat("{0}, ", "'" + objSeguradora.Cidade + "'");
            strSQL.AppendFormat("{0}, ", "'" + objSeguradora.Uf + "'");
            strSQL.AppendFormat("{0}, ", "'" + objSeguradora.Fone + "'");
            strSQL.AppendFormat("{0}, ", objSeguradora.ValorPlano.ToString().Replace(".","").Replace(",", "."));
            strSQL.AppendFormat("{0} ", "'" + objSeguradora.Tipo + "'");
            strSQL.Append(" );");
            return DAOHelper.executeDML(strSQL.ToString());
        }

        public static int apagar(Int64 codSeguradora)
        {
            StringBuilder strSQL = new StringBuilder();
            strSQL.Append(" DELETE FROM cadastro ");
            strSQL.Append(" WHERE ");
            strSQL.Append(" tipo = ");
            strSQL.AppendFormat("{0} ", 1);
            strSQL.Append(" AND codCadastro = ");
            strSQL.AppendFormat("{0}; ", codSeguradora);
            return DAOHelper.executeDML(strSQL.ToString());
        }

        public static int editar(seguradora objSeguradora)
        {
            StringBuilder strSQL = new StringBuilder();
            strSQL.Append("      UPDATE cadastro ");
            strSQL.Append("        SET ");
            strSQL.AppendFormat("   nome = {0}, ", "'" + objSeguradora.Nome + "'");
            strSQL.AppendFormat("   matricula = {0}, ", "'" + objSeguradora.Matricula + "'");
            strSQL.AppendFormat("   codTipoPlano = {0}, ", "'" + objSeguradora.TipoPlano.CodTipoPlano + "'");
            strSQL.AppendFormat("   status = {0}, ", "'" + (Int32)objSeguradora.Status + "'");
            strSQL.AppendFormat("   sitFinanceiro = {0}, ", "'" + (Int32)objSeguradora.SitFinanceiro + "'");
            strSQL.AppendFormat("   cnpj = {0}, ", "'" + objSeguradora.Cnpj + "'");
            strSQL.AppendFormat("   razaoSocial = {0}, ", "'" + objSeguradora.RazaoSocial + "'");
            strSQL.AppendFormat("   cep = {0}, ", "'" + objSeguradora.Cep + "'");
            strSQL.AppendFormat("   endereco = {0}, ", "'" + objSeguradora.Endereco + "'");
            strSQL.AppendFormat("   complemento = {0}, ", "'" + objSeguradora.Complemento + "'");
            strSQL.AppendFormat("   numero = {0}, ", "'" + objSeguradora.Numero + "'");
            strSQL.AppendFormat("   bairro = {0}, ", "'" + objSeguradora.Bairro + "'");
            strSQL.AppendFormat("   cidade = {0}, ", "'" + objSeguradora.Cidade + "'");
            strSQL.AppendFormat("   uf = {0}, ", "'" + objSeguradora.Uf + "'");
            strSQL.AppendFormat("   fone = {0}, ", "'" + objSeguradora.Fone + "'");
            strSQL.AppendFormat("   fone = {0} ", objSeguradora.ValorPlano.ToString().Replace(".", "").Replace(",", "."));
            strSQL.Append("       WHERE ");
            strSQL.AppendFormat(" tipo = {0} AND ", 1);
            strSQL.AppendFormat(" codCadastro = {0}; ", objSeguradora.CodCadastro);            
            return DAOHelper.executeDML(strSQL.ToString());
        }

        public static seguradora buscar(Int64 codSeguradora)
        {
            seguradora objSeguradora;
            List<seguradora> listaSeguradora = listar(" tipo = 1 AND codCadastro ", codSeguradora.ToString(), 1);
            if (listaSeguradora.Count == 1)
            {
                objSeguradora = listaSeguradora[0];
            }
            else
            {
                objSeguradora = null;
            }
            return objSeguradora;
        }
    }
}